public class demo1 {

    //汉若塔问题（递归）

    public static void pos(char pos1, char pos2) {
        System.out.print(pos1 + "->" + pos2 + " ");
    }

    //pos1:表示起始位置
    //pos2:表示中转位置
    //pos3:表示结束位置
    public static void hanoi(int n, char pos1, char pos2, char pos3) {
        if(n == 1) {
            pos(pos1, pos3);
        }else {
            hanoi(n - 1, pos1, pos3, pos2);
            pos(pos1, pos3);
            hanoi(n - 1, pos2, pos1, pos3);
        }


    }

    public static void main(String[] args) {
        hanoi(3,'A', 'B', 'C');
    }

    //在同一个类中定义多个方法：要求不仅可以求2个整数的最大值，还可以求3个小数的最大值？
    public static int max(int a, int b) {
        return a > b ? a : b;
    }

    public static double max(double a, double b, double c) {
        double d = a > b ? a : b;
        return d > c ? d : c;
    }

    public static void main3(String[] args) {
        System.out.println(max(2, 5));
        System.out.println(max(1.0,2.5,3.9));
    }

    //在同一个类中,分别定义求两个整数的方法 和 三个小数之和的方法。 并执行代码，求出结果
    public static int add(int a, int b) {
        return a + b;
    }

    public static int add(int a, int b, int c) {
        return a + b + c;
    }

    public static void main2(String[] args) {
        System.out.println(add(1, 2));
        System.out.println(add(1, 2,3));
    }
    //创建方法求两个数的最大值max2，随后再写一个求3个数的最大值的函数max3。
    //要求：在max3这个函数中，调用max2函数，来实现3个数的最大值计算
    public static int max1(int a, int b) {
        return a > b ? a : b;
    }


    public static int max1(int a, int b, int c) {
        return max1(a, b) > c ? max1(a, b) : c;
    }


    public static void main1(String[] args) {
        System.out.println(max1(1, 2, 3));
    }
}
